package org.strategies.bean;

import org.apache.log4j.Logger;
import org.primefaces.model.chart.CartesianChartModel;
import org.primefaces.model.chart.ChartSeries;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.strategies.dao.TestDao;

import javax.annotation.PostConstruct;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Map;

@Component
@Scope("session") //можно вместо этой строки добавить jsf аннотации, тоже будет работать:
                  // @ManagedBean
                  // @SessionScoped
public class ChartBean implements Serializable {

    private static final Logger log = Logger.getLogger(ChartBean.class);
    private CartesianChartModel model;

    @Autowired
    private TestDao testDao;

    public ChartBean() { }

    @PostConstruct
    public void initModel() {
        try {
           log.info("Start to get data");
           model = new CartesianChartModel();

            log.info("testDao = " + testDao);
            Map<Integer, BigDecimal> data = testDao.getEurUsdIncome();

            ChartSeries incomeValues = new ChartSeries();
            incomeValues.setLabel("EUR/USD income");

            for (Integer year : data.keySet()) {
                incomeValues.set(year, data.get(year));
            }
            model.addSeries(incomeValues);
        }  catch (Exception ex) {
            log.error(ex.getMessage(), ex);
        }
    }

    public CartesianChartModel getModel() { return model; }

}
